package com.c.ctgproject.utils

import android.app.Activity
import android.content.Context
import android.content.pm.ActivityInfo
import android.graphics.*
import android.net.Uri
import android.view.View
import com.c.ctgproject.R
import com.zhihu.matisse.Matisse
import com.zhihu.matisse.MimeType
import com.zhihu.matisse.engine.impl.GlideEngine
import com.zhihu.matisse.internal.entity.CaptureStrategy
import java.io.File
import java.io.FileOutputStream
import java.text.SimpleDateFormat
import java.util.*


object ImageUtil {
    /**下方中间*/
//    fun imageWaterMark(context: Context, file: File, index: Int, str: String): File {
//        val newFile: File = CompressHelper.getDefault(context).compressToFile(file)
//        val bitmap = BitmapFactory.decodeFile(newFile.absolutePath)
//        val bitmaResult = ImageShuiYinUtil.createWaterMaskRightBottom(context, bitmap, "广汽内场管理系统", 80, 10, str)
//        val ff = saveBitmapFile(context, bitmaResult, index)
//        return ff
//    }
    fun imageWaterMark(context: Context, file: File, index: Int,name:String="庖丁解车"): File {
        val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
        val time = format.format(Date())
        MyLog.d("时间时间:$time")

        //val newFile: File = CompressHelper.getDefault(context).compressToFile(file)
        val bitmap = BitmapFactory.decodeFile(file.absolutePath)
        MyLog.d("图宽高${bitmap.width};${bitmap.height}")
        val bitmaResult = ImageShuiYinUtil.createWaterMaskRightBottom(context, bitmap, name, 80, 10,time)
        //val bitmaResult = ImageShuiYinUtil.createWaterMaskRightBottom(bitmap,"广汽内场系统",context)
        val ff = saveBitmapFile(context, bitmaResult, index,50)
        return ff




    }

    /**
     * 将一个view转换为Bitmap
     * @param view
     * @return
     */
    fun convertViewToBitmap(view: View): Bitmap? {
        view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED))
        view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight())
        view.buildDrawingCache()
        return view.getDrawingCache()
    }

//    /**
//     * 将文字直接绘制到图片上
//     *
//     * @param src
//     * @param str
//     * @return
//     */
//    private fun myCreateBitmap(src: Bitmap, str: String): Bitmap {
//        var str = str
//        val t = Time()
//        t.setToNow() // 当前时间
//        val w = src.width
//        val h = src.height
//        val mstrTitle: String = t.hour.toString() + ":" + t.minute + ":" + t.second
//        str = str + mstrTitle
//        val bmpTemp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888) // 截取特定大小的图片
//        val canvas = Canvas(bmpTemp)
//        val p = Paint()
//        val familyName = "宋体"
//        val font = Typeface.create(familyName, Typeface.BOLD)
//        p.color = Color.WHITE
//        p.typeface = font
//        p.textSize = 40F
//        canvas.drawBitmap(src, 0F, 0F, p) // 绘制在src的左上角
//        canvas.drawText(str, 10F, 60F, p)
//        canvas.save()
//        canvas.restore()
//        return bmpTemp
//    }

    //图片单选
    fun initSingleImagePicker(context: Activity, requestCodeChoose: Int) {
        //编辑模式下，图片展示数量尚未达到最大数量时，会显示一个“+”号，点击后回调这里
        val videoPicker =  //视频选择器
            Matisse.from(context)
                .choose(MimeType.ofImage())
                //是否只显示选择的类型的缩略图，就不会把所有图片视频都放在一起，而是需要什么展示什么
                .showSingleMediaType(true)
                //这两行要连用 是否在选择图片中展示照相 和适配安卓7.0 FileProvider
                .capture(true)
                .captureStrategy(CaptureStrategy(true, "com.ctgoe.paoding.gq.fileProvider"))
                //有序选择图片 123456...
                .countable(true)
                //最大选择数量为9
                .maxSelectable(1)
                //选择方向
                .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
                //界面中缩略图的质量
                .thumbnailScale(0.8f)
                //蓝色主题
                .theme(R.style.Matisse_Zhihu)
                //黑色主题
                .theme(R.style.Matisse_Dracula)
                //Glide加载方式
                .imageEngine(GlideEngine())
                //请求码
                .forResult(requestCodeChoose)
    }

    /**uri转文件*/
    fun changeFile(context: Context, uri: Uri?): File? {
        //创建image文件夹
        val imgFile = context.getExternalFilesDir("image")
        var file: File? = null
        if (!imgFile!!.exists()) {
            imgFile.mkdir()
        }
        try {
            //创建按时间戳生成的图片文件
            file = File(imgFile.absolutePath + File.separator + System.currentTimeMillis() + ".jpg")
            // 使用openInputStream(uri)方法获取字节输入流
            val fileInputStream = context.contentResolver.openInputStream(uri!!)
            val fileOutputStream = FileOutputStream(file)
            val buffer = ByteArray(1024)
            var byteRead: Int
            while (-1 != fileInputStream!!.read(buffer).also { byteRead = it }) {
                fileOutputStream.write(buffer, 0, byteRead)
            }
            fileInputStream.close()
            fileOutputStream.flush()
            fileOutputStream.close()
            return file
            // 文件可用新路径 file.getAbsolutePath()
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return file
    }

}